package com.xbongbong.pro.statistic.result.pojo;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xbongbong.paas.toolbox.wrap.QueryIgnore;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.List;
import java.util.Map;

/**
 * 获取图表结果参数pojo
 * @author zcp
 * @version v1.0
 * @date 2019/2/12 14:41
 * @since v1.0
 */
@Getter
@Setter
@ToString
public class ChartResultPojo extends ChartResultBasePojo {
    private static final long serialVersionUID = -3982199423933850890L;

    /*--------以下是某些统计特定需要的参数--------*/
    /**
     * 未来时间是否计算（如客户总数折线图，超过当前时间的，都用“--”标识，不再计算数量） 0否 1是，默认1计算
     */
    private Integer futureCalc = 1;

    /*--------以下是可以通过其他参数计算出来的--------*/
    /**
     * x轴时间维度
     */
    private List<String> dateTitleList;
    /**
     * 分页的页数
     */
    private Integer page;
    /**
     * 分页的每页记录数量
     */
    private Integer pageSize;
    /**
     * 第二页开始由前端返回总数，不再查询
     */
    private Integer rowsCount;

    /**
     * 是否翻页 0否  1 是
     */
    private Integer pageTurn;

    /**
     * 导出标记(导出时需以scroll进行分页),true为导出
     */
    private Boolean exportFlag;

    /**
     * 排序字段{"field":"updateTime","sort":"acs"}
     */
    private Map<String,String> sortMap;

    /**
     * 排序字段｛"num_1": "asc", "num_2" :"desc"｝
     * 与sortMap区分开，与已有逻辑区分，用于统计表、统计图等类型
     */
    private Map<String,String> sortStatisticsMap;

    /**
     * 排序字段的顺序：sortStatisticsMap接收到的数据可能是乱的，并且如果修改的话前后端已有逻辑改动较大，因此新加一个参数只用来记录排序字段的顺序
     */
    private List<String> sortFieldOrder;

    /**
     * 资金账户id
     */
    private List<Long> accountIdList;

    /**
     * 预警同步接口标志
     */
    Boolean isWarningSync;

    /**
     * 图表中心》经销商管理》发货分析  0、按订单 1、按产品
     **/
    private Integer byOrder;

    /**
     * 图表中心、经销商相关筛选项
     **/
    private List<JSONObject> search;

    /**
     * 类型
     */
    private List<Integer> types;

    /**
     * 数值格式
     */
    private Integer numFormat;

    /**
     * 是否已进行数值格式
     * 由于系统图表逻辑复杂多样，存在图表共存的情况，会把源数据多次格式化
     */
    private Boolean numFormatFlag;

    /**
     * 单位
     */
    private String unit;

    /**
     * 地图穿透信息
     */
    private JSONArray map;
    /**
     * 经销商标记
     * @see com.xbongbong.pro.enums.DistributorMarkEnum
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private Integer distributorMark;

    /**
     * 每个图表的钻取信息处理维护pojo
     * 当前只处理自定义图表
     */
    private DrillResultPojo drillResultPojo;

}
